// modified_errno_example.c
// 修改自 errno-example-v4.c，使用 rocerror 库处理错误
#include <stdio.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
#include <linux/limits.h>
#include "rocerror.h"  // 包含错误处理库

int main(int argc, char *argv[]) {
    char filename[PATH_MAX] = { 0 };

    // 修改1：参数数量不足时，调用 app_error 处理
    if (argc != 2) {
        app_error("You must supply a filename as an argument");
    }

    // 修改3：拷贝文件名并检查（此处仅为示例，strncpy一般不会返回NULL）
    if (strncpy(filename, argv[1], sizeof(filename) - 1) == NULL) {
        app_error("Error copying filename");
    }
    filename[sizeof(filename) - 1] = '\0';

    // 修改2：调用 creat 创建文件，并使用 posix_error 处理失败情况
    int fd = creat(filename, 0644);
    if (fd == -1) {
        posix_error(errno, "Can't create file");
    }

    // 若执行到此处，表示文件创建成功，可输出提示信息
    printf("File '%s' created successfully.\n", filename);
    return 0;
}

